#define _CRT_SECURE_NO_WARNINGS  1
#include<iostream>
#include<vector>
using namespace std;



int StrToInt(string str)
{

    int ret = 0;
    int count = 0;
    for (int i = str.size() - 1; i >= 0; i--)
    {
        if (i == 0 && (str[i] == '+' || str[i] == '-'))
        {
            if (str[i] == '-')
            {
                ret *= -1;
            }
            break;
        }

        if (str[i] >= '0' && str[i] <= '9')
        {
            if (count == 0)
            {
                ret += str[i] - '0';
                count++;

            }
            else
            {
                ret += pow(10, count++) * (str[i] - '0');
            }
        }
        else
        {
            return 0;
        }
    }

    return ret;
}

void test1()
{
    StrToInt("+2147483647");

}


void test2()
{
    int w;
    int h;
    cin >> w >> h;
    vector<vector<int>> v;
    v.resize(w + 2);
    for (auto& ch : v)
    {
        ch.resize(h + 2, 1);
    }
    int i = 0;
    int j = 0;
    int max = 0;
    for (i = 0; i < w; i++)
    {
        for (j = 0; j < h; j++)
        {
            if (v[i][j] == 1)
            {
                v[i + 2][j] = 0;
                v[i][j + 2] = 0;
            }
        }

    }

    for (i = 0; i < w; i++)
    {
        for (j = 0; j < h; j++)
        {
            if (v[i][j] == 1)
            {
                max++;
            }
        }
    }

    cout << max;
}

int main()
{
	//test1();
    test2();
	return 0;
}